As many devoted computer gamers may be aware, the overall interactive entertainment of a computer game may be greatly enhanced with the presence of realistic visual effects. However, creating robust and flexible visual effects that are also computationally efficient is a considerable challenge. Such visual effects may be difficult to design, challenging to code, and even more difficult to render.
For example, a visual image that includes a large scene, such as a building interior, a city, mountain, and the like, may involve millions of polygons that need to be drawn. Drawing such a large number of polygons may be a task that is beyond the capacity of many of today's computer hardware systems. One solution to this problem recognizes that usually only a small part of such a scene is actually visible. That is, many of the polygons that comprise the scene may be hidden or occluded by other polygons, or even too far from the viewpoint to be fully recognized. It would therefore be more efficient to determine which parts of the scene are invisible and can be culled. In that way, only a small part of the scene's polygons need to be drawn.
There are a variety of known techniques for lowering the polygon-count and thereby reducing graphics hardware load, including viewing frustum culling, backface culling, and level of detail switching. Briefly, viewing frustum culling involves the removal of polygons that are not in a field of view, while backface culling removes those polygons that are on the back of an object and therefore can not be seen. Level of detail switching replaces a complex, detailed object with a model consisting of fewer polygons when it is anticipated that the details can not be seen in the final image. This may be the case, for example, when the object is far away from the viewpoint. Such techniques are typically implemented into a graphics processing unit (GPU). However, even after using such techniques, there are often still too many polygons for today's hardware to render. The problem is that scenes, such as in a game, often have very high depth complexity, that is, many layers of geometry underneath each pixel.
Another approach, known as occlusion culling, identifies and removes those polygons that are hidden behind or occluded by other objects in the scene. As such, occlusion culling is a hidden surface removal algorithm that pre-computes visibility of polygons before rendering, to reduce the load on the hidden surface removal done in graphics hardware. However, although in theory occlusion culling can remove a large number of invisible polygons, the computational cost of traditional occlusion culling approaches is often high. Therefore, it is with respect to these considerations and others that the present invention has been made.